This invention relates to processing systems and apparatus and the organization and control of their functions, with particular usefulness to Digital Signal Processing (xe2x80x9cDSPxe2x80x9d) systems. More specifically, the present invention provides an efficient operating system for a single processor or for multiple processor system, that does not abstract or hide processor hardware functionality from the application programmer while enabling quick high-level application development. The inventive operating system allows the application programmer to make maximum use of the specific processor system hardware features in order to achieve maximum functional density of the functions of the processing or DSP system.
Single-chip microprocessors have been in existence for over 20 years. Digital Signal Processors (xe2x80x9cDSPxe2x80x9d), which were first introduced over 15 years ago, are specialized forms of microprocessors, for which the instruction set and processor architecture has been optimized for functions such as control loops, infinite impulse response (xe2x80x9cIIRxe2x80x9d) and finite impulse response (xe2x80x9cFIRxe2x80x9d) filters, Kalman filtering, image processing, and signal recognition.
Embedded operating systems (xe2x80x9cOSxe2x80x9d) for microprocessors and DSP""s have been available almost as long as the devices themselves. This was a natural evolutionary step to allow quicker development of applications on embedded microprocessors and DSPs, following the evolution of mainframe computers and their operating systems. However, because of the different application environment of microprocessors and DSPs from mainframes, the microprocessor embedded OS""s primary objective is to allow ease of application development while maximizing embedded system resources.
Some prior art embedded OS""s are designed to allow easy and efficient porting of application programs from one microprocessor or DSP to another microprocessor or DSP. In such embedded operating systems, the details of the processing resources of the system are abstracted from the application program, and a uniform application programming interface (xe2x80x9cAPIxe2x80x9d) is presented by the OS to the application program. This allows the application program to interact with system resources in the same manner independent of the actual hardware processing system on which it is running.
Additionally, most of these prior art embedded operating systems take a modular approach to their functions, supplying input/output (xe2x80x9cI/Oxe2x80x9d) routines for applications to communicate with other applications and with hardware internal and external to the processor. Most of the operating systems also provide some type of real-time control and scheduling mechanism to allow the activation of certain software functions in response to events such as a hardware interrupt, timer expiration, or receipt of a communication message.
Further, embedded operating systems specific to DSPs typically include functions for memory management specific to signal processing types of algorithms, such as circular and linear queue pointer management. Some embedded DSP operating systems include a library of actual DSP algorithms, such as programmable filters, but these libraries are not classically part of the operating system, but rather are portions of application program.
However, these generalized API approaches of the prior art usually have resulted in inefficient use of particular architectural advantages of a given microprocessor or DSP because these capabilities are abstracted from the API. This results in reduced functionality of an application on a particular DSP or microprocessor. For example, if the application is simultaneous multiple-channel voice recognition, an application written using a generalized DSP operating system cannot achieve the same number of channels of functionality than the same application running with a custom kernel for the DSP.
This is a well known fact within the art, and is a point of engineering tradeoff commonly considered and analyzed during the early phases of design of a system with a DSP. On one hand, using the generalized DSP operating system allows for quicker code development and product upgrade to future DSPs. On the other hand, a custom kernel allows the same product to be implemented with a less expensive processor or fewer processors.
Some of the prior art embedded operating systems have implemented scalable architectures to allow applications designers to omit unused components of the operating system. This is an attempt to make the DSP OS more efficient, both in terms of memory utilization and bandwidth consumption.
Therefore, there exists a need in the art for an operating system that allows effective utilization of processor-specific features. Further, this operating system should provide a high-level API for applications development, while it simultaneously and efficiently uses and allocates the available hardware resources to multiple separate and distinct processes within an application.
Further, there exists a need in the art to allow flexible communications between separate and distinct processes within an application and between applications and hardware resources.
There exists a further need in the art for an embedded operating system to automatically release system resources that were initially allocated to a process which has been terminated, in order to maintain efficient use and re-use of system resources.
Finally, there exists a need in the art for all of the aforementioned features and functionality to allow separate and distinct processes within applications on separate and distinct processors to interact and inter-operate seamlessly.
The object of the present invention is to provide a processing system which allows flexible programming and execution environment for a wide range of applications while also providing efficient use of specific processor hardware and architecture features.
A further object of the present invention is to provide flexible interprocess communications mechanisms enabling multiple processes within a single processor or among a plurality of processors to communicate with one another. These flexible interprocess communications mechanisms provide an abstraction between input or sources of data, and output or consumers of the data. This abstraction allows a designer to implement a data producer process with little or no knowledge of the possible consumer processes with respect to their numbers or location. It also allows a designer to implement a data consumer process with little or no knowledge of the producer process.
A further objective of the present invention is to provide an efficient mechanism that automatically releases the system resources that were allotted to terminated processes, and returns those resources to the pool of available resources for other processes. These system resources may include system memory, data communications mechanisms, control mechanisms such as semphores and locks, system timers, other various peripherals, and interrupt assignments.